/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package mundo;

import Vehiculo.EstadoVehiculo;
import java.io.Serializable;
import java.util.ArrayList;

/**
 *
 * @author cesarfgt
 */
public class Malla implements Serializable{
    private ArrayList<Punto> ListaPuntos;
    private ArrayList<Tramo> ListaTramos;
    private ArrayList<Cruce> ListaCruces;
    private ArrayList<EstadoVehiculo> ListaVehiculos;
    private int maxX;
    private int maxY;
    public Malla() {
        this.ListaCruces = new ArrayList<Cruce>();
        this.ListaTramos = new ArrayList<Tramo>();
        this.ListaPuntos = new ArrayList<Punto>();
        this.ListaVehiculos = new ArrayList<EstadoVehiculo>();
        maxX = 0;
        maxY = 0;
    }

    /**
     * @return the ListaTramos
     */
    public void addTramo(Tramo tramo) {
        this.getListaTramos().add(tramo);
        this.ListaPuntos.addAll(tramo.getCamino_Izquierdo());
        this.ListaPuntos.addAll(tramo.getCamino_Derecho());
    }

   public void UpdateVehiculo(EstadoVehiculo ev) {
        for(int i=0;i<ListaVehiculos.size();i++){
            EstadoVehiculo es=ListaVehiculos.get(i);
            if(es.Nombre.equals(ev.Nombre)){
                ListaVehiculos.set(i, ev);
                return;
            }
        }
        ListaVehiculos.add(ev);
    }
    /**
     * @return the ListaCruces
     */
    public void addCruce(Cruce cruce) {
        this.getListaCruces().add(cruce);
        if(cruce.getSupDer().getX()>getMaxX()){
            this.maxX = cruce.getSupDer().getX(); 
        }
        if(cruce.getSupDer().getY()>getMaxY()){
            this.maxY = cruce.getSupDer().getY();
        }
        this.ListaPuntos.addAll(cruce.getPuntos());
    }
    
    
    /**
     * @return the ListaTramos
     */
    public ArrayList<Tramo> getListaTramos() {
        return ListaTramos;
    }

    /**
     * @return the ListaCruces
     */
    public ArrayList<Cruce> getListaCruces() {
        return ListaCruces;
    }
    
    public ArrayList<EstadoVehiculo> getListaVehiculos() {
        return ListaVehiculos;
    }
    /**
     * @return the maxX
     */
    public int getMaxX() {
        return maxX;
    }

    /**
     * @return the maxY
     */
    public int getMaxY() {
        return maxY;
    }

    /**
     * @return the ListaPuntos
     */
    public ArrayList<Punto> getListaPuntos() {
        return ListaPuntos;
    }

    /**
     * @param ListaPuntos the ListaPuntos to set
     */
    /*
    public void setListaPuntos(ArrayList<Punto> ListaPuntos) {
        this.ListaPuntos = ListaPuntos;
    }
    */
}
